<template>
    <div class="wrapper">
			
			<!-- header部分 -->
			<header>
				<p>商家信息</p>
			</header>
			
			<!-- 商家logo部分 -->
			<div class="business-logo">
				<img :src="business.businessImg">
			</div>
			
			<!-- 商家信息部分 -->
			<div class="business-info">
				<h1>{{business.businessName}}</h1>
				<p>&#165;{{business.starPrice}}起送 &#165;{{business.deliveryPrice}}配送</p>
				<p>{{business.businessExplain}}</p>
			</div>
			
			<!-- 食品列表部分 -->
			<ul class="food">
				<li v-for="(items,index) in foodArray" >
					<div class="food-left">
						<img :src="items.foodImg">
						<div class="food-left-info">
							<h3>{{items.foodName}}</h3>
							<p>{{items.foodExplain}}</p>
							<p>&#165;{{items.foodPrice}}</p>
						</div>
					</div>
					<div class="food-right">
						<div>
							<!-- v-show -->
							<i class="fa fa-minus-circle" @click="minus(index)" v-show="items.quantity>0"></i>
						</div>
						<p><span v-show="items.quantity>0">{{items.quantity}}</span></p>
						<div>
							<i class="fa fa-plus-circle" @click="add(index)"></i>
						</div>
					</div>
				</li>
	
			</ul>
	
			<!-- 购物车部分 -->
			<div class="cart">
				<div class="cart-left">
					<div class="cart-left-icon">
						<i class="fa fa-shopping-cart"></i>
						<div class="cart-left-icon-quantity" v-show="totalQuantity != 0">{{totalQuantity}}</div>
					</div>
					<div class="cart-left-info">
						<p>&#165;{{totalPrice}}</p>
						<p>另需配送费{{business.deliveryPrice}}元</p>
					</div>
				</div>
				<div class="cart-right">
					<!-- 不够起送费 -->
					
					<div class="cart-right-item" v-show="totalSettlt<business.starPrice">
						&#165;{{business.starPrice}}起送
					</div>
					
					<!-- 达到起送费 -->
					<div class="cart-right-item" @click="toOrder" v-show="totalSettlt>=business.starPrice">
					    去结算
					</div>
				</div>
			</div>
			
		</div>	
</template>

<script>
	export default{
		data(){
			return{
				//获取query参数
				businessId:this.$route.query.businessId,
				business:{},
				foodArray:[],				
				user:{},
							
			}
		},
		// created() 这是它的一个生命周期钩子函数，就是一个vue实例被生成后调用这个函数。
		// 一个vue实例被生成后还要绑定到某个html元素上，之后还要进行编译，然后再插入到document中。
		// 每一个阶段都会有一个钩子函数，方便开发者在不同阶段处理不同逻辑。
		// 一般可以在created函数中调用ajax获取页面初始化所需的数据。
		created(){
			// 从sessionStorage中获取到用户的信息，如果没有此用户的信息，返回null
			this.user = this.$getSessionStorage('user')

			// 通过axios向后台发送异步请求
			this.$axios.post('/BusinessController/getBusinessId',this.$qs.stringify({
				businessId:this.businessId
				// then方法：主要用于一个函数要用到另一个函数返回的值，
			})).then(reponse=>{
				console.log(reponse)
				//如果请求成功从后台获取到数据
				this.business = reponse.data
				console.log(reponse.data)
			}).catch(error =>{
				// console.error 将错误信息输出到控制台：
				console.error(error);
			})
			
			//
			this.$axios.post('FoodController/listFoodByBusinessId',this.$qs.stringify({
				businessId:this.businessId
			})).then(response=>{
				console.log(response)
				if(response.data!=null){
					//如果请求成功从后台获取到数据
					this.foodArray = response.data;

					//遍历foodArray集合，将得到的每一个Food对象添加一个属性quantity=0
					for(let i=0;i<this.foodArray.length;i++){
							this.foodArray[i].quantity=0;	

					}
					if(this.user!=null){
						this.listCart();						
					}
				}
				
				// this.foodArray[index].quantity=this.cartArray[index].quantity
				console.log(response.data)
			}).catch(error =>{
				// console.error 将错误信息输出到控制台：
				console.error(error);
			});
			
		},
		methods:{
			minus(index){
				//首先验证是否登录,判断用户是否存在，如果不存在就跳转到login界面
				if(this.user==null){
					this.$router.push({
						path:'/login'						
					})
					return;
				}
				// 完成具体的操作（-）,判断数量>1  如果成立updateCart 否则removeCart
				if(this.foodArray[index].quantity>1){
                    this.updateCart(index,-1)
				}else{
					this.removeCart(index)
				}
			},
			add(index){
				//首先验证是否登录,判断session中是否存在用户的数据，如果不存在就跳转到login（登录）界面
				if(this.user==null){
					this.$router.push({
						path:'/login'						
					})
					return
				}
				// 完成具体的操作（+） 判断food对象中的数量==0 如果条件成立，调用后台的saveCart 否则updateCart
				if(this.foodArray[index].quantity==0){
                    this.saveCart(index)
				}else{
					this.updateCart(index,1)
				}
			},
			//  查询购物车信息
			//注意：当你刷新页面的时候，之前购买食品的数量不会保存，解决方案：
			 //在methods中创建一个listCart方法 ，通过axios向后台发送请求 CartController/listCart 

			
			listCart(){
				this.$axios.post('CartController/listCart',this.$qs.stringify({
					userId:this.user.userId,
					businessId:this.businessId,
					//foodId:this.foodArray[index].foodId
					
				})).then(response=>{
					//如果请求成功，从后台会返回一个集合  cartArr[]
					// this.foodArray=response.data;
					// console.log('这是response：'+response)
					// console.log('这是responsedata：'+response.data)
					let cartArray=response.data;
					for(let fooditem of this.foodArray){
						// cartArray.push(this.foodArray[i]);
						fooditem.quantity=0;						
						for(let cartitem of cartArray){
							if(cartitem.foodId==fooditem.foodId){
							//要将 食品的数量= 购物车中的数量
								fooditem.quantity=cartitem.quantity;
							}
						}
						
					}
					//注意：数量更新后要在页面刷新才能显示  this.foodArr.sort()
					this.foodArray.sort()
					// console.log(response.data);
				}).catch(error=>{
					console.log(error)
				})
			},
			
			saveCart(index){
				// 通过axios向后台发送请求
				this.$axios.post('CartController/saveCart',this.$qs.stringify({
					//参数：businessId   userId  foodId: this.foodArr[index].foodId
					userId:this.user.userId,
					businessId:this.businessId,
					foodId:this.foodArray[index].foodId
				})).then(response=>{
					 //如果请求成功了（then） 要将食品的数量更新为1  this.foodArr[index].quantity = 1
					if(response.data==1){
						this.foodArray[index].quantity=1
						console.log(this.foodArray[index].quantity)
					 //注意：数量更新后要在页面刷新才能显示  this.foodArr.sort()
						this.foodArray.sort()
					}else{
						alert("添加失败！")
					}											
				}).catch(error=>{
					console.log(error)
				})
			},
			updateCart(index,num){
				// 通过axios向后台发送请求
				this.$axios.post('CartController/updateCart',this.$qs.stringify({
					 //参数：businessId   userId  foodId  quantity: this.foodArr[index].quantity+num
					userId:this.user.userId,
					businessId:this.businessId,
					foodId:this.foodArray[index].foodId,
					quantity:this.foodArray[index].quantity+num
				})).then(response=>{
					if(response.data==1){//如果请求成功了（then） 修改数量  this.foodArr[index].quantity+=num
						this.foodArray[index].quantity+=num;
						//注意：数量更新后要在页面刷新才能显示  this.foodArr.sort()
						this.foodArray.sort()
					}else{
						alert("修改失败")
					}
					
					// console.log(foodId)
					// console.log(response.data);
				}).catch(error=>{
					console.log(error)
				})

			},

			removeCart(index){
				// 通过axios向后台发送请求
				this.$axios.post('CartController/removeCart',this.$qs.stringify({
					//参数： userId businessId foodId
					userId:this.user.userId,
					businessId:this.businessId,
					foodId:this.foodArray[index].foodId				
				})).then(response=>{
					//如果成功： 将食品的数量更新为0： 数量和减号都要消失
					if(response.data==1){
						this.foodArray[index].quantity=0;
						//注意：数量更新后要在页面刷新才能显示  this.foodArr.sort()
						this.foodArray.sort()

						console.log(this.foodArray[index].foodId);
					}
					
					
				}).catch(error=>{
					console.log(error)
				})
			},
			toOrder(){
				this.$router.push({
					path:'/order',
					query:{
						businessId:this.business.businessId,					
					}
				})
			}

		},

		computed:{
			//食品的总价格
			totalPrice(){

				let total = 0;
				for(let itm of this.foodArray){
					total+=itm.foodPrice*itm.quantity
				}
				return total;

			},

			// 食品的总数量
			totalQuantity(){
				let quantity = 0;
				for(let itm of this.foodArray){
					quantity+=itm.quantity
				}
				return quantity;
			},
			
			// 结算总价格（配送费（deliveryPrice））
			totalSettlt(){
			   return this.totalPrice+this.business.deliveryPrice;
				 
			}
			
			
		}

	}
</script>

<style scoped>
/****************** 总容器 ******************/
.wrapper{
	width: 100%;
	height: 100%;
}

/****************** header部分 ******************/
.wrapper header{
	width: 100%;
	height: 12vw;
	background-color: #0097FF;
	color: #fff;
	font-size: 4.8vw;
	
	position: fixed;
	left: 0;
	top: 0;
	z-index: 1000;
	
	display: flex;
	justify-content: center;
	align-items: center;
}

/****************** 商家logo部分 ******************/
.wrapper .business-logo{
	width: 100%;
	height: 35vw;
	/*使用上外边距避开header部分*/
	margin-top: 12vw;
	
	display: flex;
	justify-content: center;
	align-items: center;
}
.wrapper .business-logo img{
	width: 40vw;
	height: 30vw;
	border-radius: 5px;
}

/****************** 商家信息部分 ******************/
.wrapper .business-info{
	width: 100%;
	height: 20vw;
	
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
}
.wrapper .business-info h1{
	font-size: 5vw;
}
.wrapper .business-info p{
	font-size: 3vw;
	color: #666;
	margin-top: 1vw;
}

/****************** 食品列表部分 ******************/
.wrapper .food{
	width: 100%;
	/*使用下外边距避开footer部分*/
	margin-bottom: 14vw;
}
.wrapper .food li{
	width: 100%;
	box-sizing: border-box;
	padding: 2.5vw;
	user-select: none;
	
	display: flex;
	justify-content: space-between;
	align-items: center;
}
.wrapper .food li .food-left{
	display: flex;
	align-items: center;
}
.wrapper .food li .food-left img{
	width: 20vw;
	height: 20vw;
}
.wrapper .food li .food-left .food-left-info{
	margin-left: 3vw;
}
.wrapper .food li .food-left .food-left-info h3{
	font-size: 3.8vw;
	color: #555;
}
.wrapper .food li .food-left .food-left-info p{
	font-size: 3vw;
	color: #888;
	margin-top: 2vw;
}
.wrapper .food li .food-right{
	width: 16vw;
	display: flex;
	justify-content: space-between;
	align-items: center;
}
.wrapper .food li .food-right .fa-minus-circle{
	font-size: 5.5vw;
	color: #999;
	cursor: pointer;
}
.wrapper .food li .food-right p{
	font-size: 3.6vw;
	color: #333;
}
.wrapper .food li .food-right .fa-plus-circle{
	font-size: 5.5vw;
	color: #0097EF;
	cursor: pointer;
}

/****************** 购物车部分 ******************/
.wrapper .cart{
	width: 100%;
	height: 14vw;
	
	position: fixed;
	left: 0;
	bottom: 0;
	
	display: flex;
}
.wrapper .cart .cart-left{
	flex: 2;
	background-color: #505051;
	display: flex;
}
.wrapper .cart .cart-left .cart-left-icon{
	width: 16vw;
	height: 16vw;
	box-sizing: border-box;
	border: solid 1.6vw #444;
	border-radius: 8vw;
	background-color: #3190E8;
	font-size: 7vw;
	color: #fff;
	
	display: flex;
	justify-content: center;
	align-items: center;
	
	margin-top: -4vw;
	margin-left: 3vw;
	
	position: relative;
}
.wrapper .cart .cart-left .cart-left-icon-quantity{
	width: 5vw;
	height: 5vw;
	border-radius: 2.5vw;
	background-color: red;
	color: #fff;
	font-size: 3.6vw;
	
	display: flex;
	justify-content: center;
	align-items: center;
	
	position: absolute;
	right: -1.5vw;
	top: -1.5vw;
}
.wrapper .cart .cart-left .cart-left-info p:first-child{
	font-size: 4.5vw;
	color: #fff;
	margin-top: 1vw;
}
.wrapper .cart .cart-left .cart-left-info p:last-child{
	font-size: 2.8vw;
	color: #AAA;
}

.wrapper .cart .cart-right{
	flex: 1;
}
/*达到起送费时的样式*/
.wrapper .cart .cart-right .cart-right-item{
	width: 100%;
	height: 100%;
	background-color: #38CA73;
	color: #fff;
	font-size: 4.5vw;
	font-weight: 700;
	user-select: none;
	cursor: pointer;
	
	display: flex;
	justify-content: center;
	align-items: center;
}

/*不够起送费时的样式（只有背景色和鼠标样式的区别）*/
/*
.wrapper .cart .cart-right .cart-right-item{
	width: 100%;
	height: 100%;
	background-color: #535356;
	color: #fff;
	font-size: 4.5vw;
	font-weight: 700;
	user-select: none;
	
	display: flex;
	justify-content: center;
	align-items: center;
}
*/
</style>